package ru.compft.common.dao;

import ru.compft.common.data.Module;
import ru.compft.common.data.ModulePage;

import java.util.List;

/**
 * User: VVasiliev
 * Date: 14.06.12
 * Time: 13:40
 * DAO для работы с модулями
 */
public interface ModuleDao {
    /**
     * Получение списка всех модулей системы
     *
     * @return
     */
    List<Module> getAllModules();

    /**
     * Получение определенного количества модулей (count) с определенного индекса
     *
     * @param from
     * @param count
     * @return
     */
    List<Module> getModules(int from, int count);

    /**
     * Подсчитываем все модули в БД
     *
     * @return
     */
    int countAllModules();

    /**
     * Получение модуля по ID
     *
     * @param id
     * @return
     */
    Module getModuleById(Long id);

    /**
     * Получение модуля по коду
     *
     * @param code
     * @return
     */
    Module getModuleByCode(String code);

    /**
     * Получение модуля по относительному пути
     *
     * @param path
     * @return
     */
//    Module getModuleByPath(String path);

    /**
     * генерируем новый ID
     *
     * @return
     */
//    Long generateId();

    /**
     * Обновление модуля в БД
     *
     * @param module
     * @return
     */
    Module update(Module module);

    List<ModulePage> getAllModulePages();

    /**
     * Список всех страниц для модуля
     *
     * @return
     */
    List<ModulePage> getAllPagesToModule(Long moduleId);
}
